package com.kamistoat.meimeistore.commondatascope.annotation;

import java.lang.annotation.*;

/**
 * 数据权限过滤注解。
 * 对于每一个 SysRole，其 dataScope 字段显示了该角色能够访问的数据范围。
 * 如果用户调用查询方法A，而方法A使用了 @DataScope注解，则表明方法A只返回该用户的所有角色能够访问的数据范围内的结果。
 * <p>
 * 使用这个注解的意义在于，使用一个切面，整体解决数据权限过滤的问题，这样在写业务层开发的时候，只需要添加一个注解就行了。
 * 否则就得在业务层，对每一个方法写重复的数据权限过滤方法。
 * <p>
 * 这里的两个属性字段，是因为原项目使用mybatis，需要手动构建Sql语句，这两个属性都是用来拼接Sql语句的。
 * 现在改用 Mybatis-plus，不再需要这两个属性字段。
 *
 * 由  DataScopeAspect  切面进行处理
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataScope {
    //以下两个属性字段是原项目用来拼接 mybatis的SQL语句的。现在已经不需要使用了

    /**
     * 部门表别名
     */
    String deptAlias() default "";

    /**
     * 用户表的别名
     */
    String userAlias() default "";
}
